package work01;

import java.util.ArrayList;

public class Test {
    public static void print1(ArrayList<Object> list){
    }//参数可以接收任何泛型的ArrayList参数
    public static void print2(ArrayList<?extends Person> list){
    }//参数可以接收任何Person及其子类泛型的ArrayList参数
    public static void print3(ArrayList<?extends Student> list){
    }//参数可以接收任何Student及其子类泛型的ArrayList参数
    public static void print4(ArrayList<?super JavaStudent> list){
    }//参数可以接收任何Java学员，及其父类泛型的ArrayList参数

    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<Person> list2 = new ArrayList<>();
        ArrayList<Student> list3 = new ArrayList<>();
        ArrayList<JavaStudent> list4 = new ArrayList<>();
        ArrayList<UIStudent> list5 = new ArrayList<>();
        ArrayList<Teacher> list6 = new ArrayList<>();
        ArrayList<JavaTeacher> list7 = new ArrayList<>();
        ArrayList<UITeacher> list8 = new ArrayList<>();
        print2(list2);print2(list3);print2(list4);print2(list5);print2(list6);print2(list7);print2(list8);
        print3(list3);print3(list4);
        print4(list4);print4(list3);
        /*print1()不能接收任何集合  因为print1只能接受Object类型
print2()可以接收除了list1之外所有的集合 因为泛型要求的是参数可以接收任何Person及其子类泛型的ArrayList参数
print3（）可以接受list3和list4      因为print3要求参数可以接收任何Student及其子类泛型的ArrayList参数
print4（）可以接收list4和list3      因为参数可以接收任何Java学员，及其父类泛型的ArrayList参数
        *

        */
    }
}
